#ifndef RESOURCELOADER_HH
#define RESOURCELOADER_HH

#include <QtXml>
#include <QtXmlPatterns>
#include <QXmlQuery>
#include <QDomDocument>
#include <QStringList>
#include <QString>
#include <QPixmap>
#include <iostream>
#include <sstream>

#include "room.hh"
#include "item.hh"
#include "QDate"

#include <QDir>

/*
  Cette classe aux méthodes statiques est interrogée
  pour récupérer dans le fichier XML de données les
  infos pour construire des instances de room/item/element
  adéquates
*/
class ResourceLoader{
private:
public:
  ResourceLoader();
  ~ResourceLoader();

  /*
    Lit le XML et mappe la room passée en paramètre
  */
  static void loadRoom(Room*);

  static QString executeQuery(QXmlQuery*);
  static QStringList executeQueryMultipleResults(QXmlQuery*);
  static QString extractBackgroundImgSrc(int, QXmlQuery*);

  /*
    Charge la liste des sauvegardes
  */
  static QList<QString> extractsave();
  static std::list<int> getPlayerItems(std::string id);
  static void extractAutoScene(Room*, QXmlQuery*);
  static void extractElementsForRoom(QXmlQuery*, Room*);
  static void extractTextIdForRoom(QXmlQuery*, Room*);
  static void extractIsSavePoint(QXmlQuery*, Room*);

  /*
    Lit le XML pour extraire l'Item correspondant
  */
  static Item extractItem(int);

  /*
    Sauvegarde de la partie en cours
  */
  static bool SaveGame(std::string gameid, int roomid, std::string playername, std::vector<Item> itemlist);
};

#endif
